import sys


class Dog:
    def __del__(self):
        print("===英雄over===")


# 这样写 结果是
'''
===英雄over===
===英雄over===
========
'''
dog1 = Dog()
dog2 = Dog()

# 是两个不同的对象
print(dog1)
print(dog2)

print("测量一个对象的引用计数的方法:%d" % sys.getrefcount(dog1))  # 输出 2
print("测量一个对象的引用计数的方法:%d" % sys.getrefcount(dog2))  # 输出 2
print("测量一个对象的引用计数的方法:%d" % sys.getrefcount(Dog))  # 输出 7  怎样计算出来的

# 这样写 结果是
'''
===英雄over===
========
'''
dog1 = Dog()
dog2 = dog1;

del dog1  # 不会调用 __del__方法,因为这个对象 还有其他的变量指向它,即 引用计算不是0
del dog2  # 此时会调用__del__方法,因为没有变量指向它了

print("========")
